package com.xunk.equipment.service.yikang.service.impl;

import com.xunk.common.core.enums.SupplierEnum;
import com.xunk.common.core.text.Convert;
import com.xunk.common.core.utils.serialization.JsonSerializer;
import com.xunk.common.redis.service.RedisService;
import com.xunk.equipment.service.IEquipmentNotifyService;
import com.xunk.equipment.service.yikang.enums.RingNotifyEnum;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Map;
import java.util.concurrent.TimeUnit;

/**
 * @ProjectName: xunk
 * @Package: com.xunk.equipment.service.yikang.service.impl
 * @ClassName: DoorViewerNotifyService
 * @Author: luanzhiwei
 * @Description: 怡康猫眼接收回调实现
 * @Date: 2021/4/2 11:23
 * @Version: 1.0
 */
@Service
@Slf4j
public class DoorViewerNotifyService implements IEquipmentNotifyService {

    @Autowired
    private RedisService redisService;

    /**
     * ========PIR抓拍参数
     * alarmTime	long	PIR 报警时间戳，产生报警那一刻的设备时间
     * fileType	int	必选， 报警关联的原始多媒体文件类型，3 单张抓拍 4 多张连拍 5 录像
     * originFileUrl	String	必选，报警关联的原始多媒体文件 URL，具体类型取决于 fileType
     * previewFileUrl	String	可选，报警关联的预览图片 URL
     * ============门铃上传图片参数
     * fid	string	必选，设备端产生的门铃事件 ID，不同设备可能相同，相同设备保证唯一
     * opType	string	可选，0 门外来电 1 门内来电，默认 0
     * createTime	long	可选，服务端收到门铃的时间戳，产生报警那一刻的设备时间
     * originFileUrl	String	必选，门铃关联的原始图片 URL
     * previewFileUrl	String	可选，门铃关联的预览图片 URL
     * ==================门铃事件参数
     * fid	string	必选，设备端产生的门铃事件 ID，不同设备可能相同，相同设备保证唯一
     * opType	string	可选，0 门外来电 1 门内来电，默认 0
     * createTime	long	可选，服务端收到门铃的时间戳，产生报警那一刻的设备时间
     *
     * @param data
     */
    @Override
    public void equipmentNotify(String data) {
        log.info("接收到移康猫眼消息推送");
        Map<String, Object> event = JsonSerializer.deserializeMap(data);
        String eventType = Convert.toStr(event.get("eventType"));
        event.put("eventDesc", RingNotifyEnum.getDesc(eventType));
        String key = SupplierEnum.YIKANG.getSupplierName() + Convert.toStr(event.get("deviceId"));
        redisService.setCacheMap(key, event);
        redisService.expire(key, 1L, TimeUnit.DAYS);
    }


}
